package com.Date3;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.time.temporal.TemporalAccessor;

public class Test2 {
    public static void main(String[] args) {
        //格式化类DateTimeFormatter，用来String类型LocalTime LocalDate LocalDateTime的互相转换

    //方式1：通过预定义进行格式的转化
        DateTimeFormatter itf1 = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
        //idt1完成String和LocalDateTime的转化
        LocalDateTime dt1  = LocalDateTime.now();
        //LocalDateTime间接继承于TemporalAccessor
        //format的作用是作为二者之间的强梁
        String str1 = itf1.format(dt1);
        //虽然打印出来的是字符串，但实际上不是字符串，因此需要转化为字符串
        System.out.println(dt1);
        System.out.println(str1);

        //将String类型转化为LocalDateTime
        TemporalAccessor dt2 = itf1.parse("2021-08-20T21:19:47.247");//用接口接的，用接口接了一个实现类
        System.out.println(dt2);



    //方式2：本地相关的格式 ofLocalizedDateTime
        //参数有三种格式：FormatStyle.LONG FormatStyle.SHORT FormatStyle.MEDIUM
        DateTimeFormatter itf2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
        //LocalTime和String类型的转化
        LocalDateTime dt3 = LocalDateTime.now();
        String str2 = itf2.format(dt3);
        System.out.println(dt3);
        System.out.println(str2); //2021年8月20日 下午09时35分58秒

        //String和LocalTime类型的转化
        TemporalAccessor dt4 = itf2.parse("2021年8月20日 下午09时35分58秒");
        System.out.println(dt4);

    //方法3：按照自定义的格式 ofPattern() 这种方法比较常用
        DateTimeFormatter itf3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
        //LocalTime和String类型的转化
        LocalDateTime dt5 = LocalDateTime.now();
        String str3 = itf3.format(dt5);
        System.out.println(dt5);
        System.out.println(str3);
        //String和LocalTime类型的转化
        TemporalAccessor dt6 = itf3.parse("2021-08-20 09:42:57");
        System.out.println(dt6);
    }
}
